package com.sophie.service.impl;

import com.sophie.DTO.ZoneDTO;
import com.sophie.dao.IZoneDAO;
import com.sophie.dao.impl.ZoneDAOImpl;
import com.sophie.entity.Zone;
import com.sophie.service.IZoneService;
import com.sophie.util.ResultVO;

import java.util.List;
import java.util.Objects;

/**
 * @Author: Rowena
 * @CreateTime: 2024-09-10 16:37:31
 * @Version: 1.0
 */

public class ZoneServiceImpl implements IZoneService {
    IZoneDAO zoneDAO=new ZoneDAOImpl();
    @Override
    public ResultVO addZone(Zone zone) {
        int i = zoneDAO.addZone(zone);
        if(i>0){
            return ResultVO.ok("动态发布成功!");
        }
        return ResultVO.fail("动态发布失败!");
    }

    @Override
    public ResultVO getZonesByUserId(Integer id) {
        List<ZoneDTO> zones = zoneDAO.getZonesByUserId(id);
        if (Objects.nonNull(zones)) {
            return ResultVO.ok("成功获取用户所有动态!").setData(zones);
        }
        return ResultVO.fail("用户所有动态获取失败!");
    }

    @Override
    public ResultVO countZone(Integer id) {
        long l = zoneDAO.countZonesByUserId(id);
        if (l > 0) {
            return ResultVO.ok("总数获取成功!").setData(l);
        }
        return ResultVO.fail("总数获取失败!");
    }

    @Override
    public ResultVO getAllZones() {
        List<ZoneDTO> zones = zoneDAO.getAllZones();
        if (Objects.nonNull(zones)) {
            return ResultVO.ok("所有动态获取成功!").setData(zones);
        }
        return ResultVO.fail("所有动态获取失败!");
    }

    @Override
    public ResultVO countTransmit(Integer id) {
        return ResultVO.ok("数据获取成功").setData(zoneDAO.countTransmit(id));
    }

    @Override
    public ResultVO checkCollected(Integer zoneid,Integer userid) {
        return ResultVO.ok("数据获取成功").setData(zoneDAO.checkCollected(zoneid,userid));
    }

    @Override
    public ResultVO collectZone(Integer zoneid, Integer userid) {
        long l = zoneDAO.collectZone(zoneid, userid);
        return ResultVO.ok("数据获取成功").setData(l);
    }

    @Override
    public ResultVO cancelZone(Integer zoneid, Integer userid) {
        return ResultVO.ok("数据获取成功").setData(zoneDAO.cancelZone(zoneid, userid));
    }
}
